package com.tbit.uqbike.service.base;

import com.tbit.uqbike.object.pojo.TerPosition;
import com.tbit.uqbike.object.value.LoginInfo;

import java.util.List;
import java.util.Map;

/**
 * 终端历史service
 *
 * @author Leon
 * 2017年2月24日 下午4:09:17
 */
public interface HistoryService {

    List<TerPosition> getByMachineNOAndTime(Integer mapType, String machineNO, Long startTime, Long endTime,Integer machineId);

    /**
     * 根据设备编号批量查询
     *
     * @param
     * @return
     */
    List<TerPosition> getByUserCodeAndTime(LoginInfo loginInfo, Integer mapType, String userCode, Long startTime, Long endTime);

    /**
     * 查询指定时间内里程
     *
     * @param userCode
     * @param startTime
     * @param endTime
     * @return
     */
    Integer getMileageByMachineNoAndTime(LoginInfo loginInfo, String userCode, Long startTime, Long endTime);

    /**
     * 根据设备编号查询指定里程
     *
     * @param machineNo 设备编号
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 。
     */
    Double getMileageByMachineNoAndTime(String machineNo, Long startTime, Long endTime);

    /**
     * 获取最后一次骑行轨迹
     *
     * @param mapType
     * @param userCode
     * @return
     */
    List<TerPosition> getLastRideHistory(LoginInfo loginInfo, Integer mapType, String userCode);

    /**
     * 获取最后非订单轨迹
     *
     * @param mapType
     * @param userCode
     * @return
     */
    List<TerPosition> getLastActiveHistory(LoginInfo loginInfo, Integer mapType, String userCode);

    /**
     * 查询前1000条数据
     *
     * @param params
     * @return
     */
    List<TerPosition> getByMachineNO(Integer mapType, String userCode);

    /**
     * 根据设备编号批量查询
     *
     * @param mapType
     * @param accountUserPhone
     * @param startTime
     * @param endTime
     * @return
     */
    List<TerPosition> getByAccountUserPhoneAndTime(Integer mapType, String accountUserPhone, String startTime, String endTime);

    /**
     * @description: 根据时间范围返回分段查询参数
     * @author: mo.shanyong
     * @date: 2025/4/21 10:27
     * @param: machineNO 设别编号
     * @param: startTime 开始时间
     * @param: endTime 结束时间
     * @param: paramName 查询的参数名
     * @param: checkCount 是否检查数据量
     * @return: java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     */
    List<Map<String, Object>> getSearchParams(String machineNO,String start,String end,String paramName,boolean checkCount);
}  